#include <bits/ioctl.h>

/* MIPS-specific */

#define TCGETA          0x5401
#define TCSETA          0x5402
#define TCSETAW         0x5403
#define TCSETAF         0x5404
#define TCGETS          0x540d
#define TCSETS          0x540e
#define TCSETSW         0x540f
#define TCSETSF         0x5410

#define TIOCSCTTY       0x5480
#define TIOCSWINSZ      _IOW('t', 103, struct winsize)
#define TIOCGWINSZ      _IOR('t', 104, struct winsize)

struct winsize {
	unsigned short row;
	unsigned short col;
	unsigned short xpixel;
	unsigned short ypixel;
};

#define NCCS 19

struct termios {
	unsigned iflag;
	unsigned oflag;
	unsigned cflag;
	unsigned lflag;
	unsigned char line;
	unsigned char cc[NCCS];
	unsigned ispeed;
	unsigned ospeed;
};

/* c_cc characters */
#define VINTR            0
#define VQUIT            1
#define VERASE           2
#define VKILL            3
#define VMIN             4
#define VTIME            5
#define VEOL2            6
#define VSWTC            7
#define VSWTCH          VSWTC
#define VSTART           8
#define VSTOP            9
#define VSUSP           10
#define VREPRINT        12
#define VDISCARD        13
#define VWERASE         14
#define VLNEXT          15
#define VEOF            16
#define VEOL            17

/* c_iflag bits */
#define IGNBRK  0000001
#define BRKINT  0000002
#define IGNPAR  0000004
#define PARMRK  0000010
#define INPCK   0000020
#define ISTRIP  0000040
#define INLCR   0000100
#define IGNCR   0000200
#define ICRNL   0000400
#define IUCLC   0001000
#define IXON    0002000
#define IXANY   0004000
#define IXOFF   0010000
#define IMAXBEL 0020000
#define IUTF8   0040000

/* c_oflag bits */
#define OPOST   0000001
#define OLCUC   0000002
#define ONLCR   0000004
#define OCRNL   0000010
#define ONOCR   0000020
#define ONLRET  0000040
#define OFILL   0000100
#define OFDEL   0000200
#define NLDLY   0000400
#define   NL0   0000000
#define   NL1   0000400
#define CRDLY   0003000
#define   CR0   0000000
#define   CR1   0001000
#define   CR2   0002000
#define   CR3   0003000
#define TABDLY  0014000
#define   TAB0  0000000
#define   TAB1  0004000
#define   TAB2  0010000
#define   TAB3  0014000
#define   XTABS 0014000
#define BSDLY   0020000
#define   BS0   0000000
#define   BS1   0020000
#define VTDLY   0040000
#define   VT0   0000000
#define   VT1   0040000
#define FFDLY   0100000
#define   FF0   0000000
#define   FF1   0100000
/*
#define PAGEOUT ???
#define WRAP    ???
 */

/* c_cflag bit meaning */
#define CBAUD   0010017
#define  B0     0000000
#define  B50    0000001
#define  B75    0000002
#define  B110   0000003
#define  B134   0000004
#define  B150   0000005
#define  B200   0000006
#define  B300   0000007
#define  B600   0000010
#define  B1200  0000011
#define  B1800  0000012
#define  B2400  0000013
#define  B4800  0000014
#define  B9600  0000015
#define  B19200 0000016
#define  B38400 0000017
#define EXTA B19200
#define EXTB B38400
#define CSIZE   0000060
#define   CS5   0000000
#define   CS6   0000020
#define   CS7   0000040
#define   CS8   0000060
#define CSTOPB  0000100
#define CREAD   0000200
#define PARENB  0000400
#define PARODD  0001000
#define HUPCL   0002000
#define CLOCAL  0004000
#define CBAUDEX 0010000
#define    BOTHER 0010000
#define    B57600 0010001
#define   B115200 0010002
#define   B230400 0010003
#define   B460800 0010004
#define   B500000 0010005
#define   B576000 0010006
#define   B921600 0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017
#define CIBAUD    002003600000
#define CMSPAR    010000000000
#define CRTSCTS   020000000000

#define IBSHIFT 16

/* c_lflag bits */
#define ISIG    0000001
#define ICANON  0000002
#define XCASE   0000004
#define ECHO    0000010
#define ECHOE   0000020
#define ECHOK   0000040
#define ECHONL  0000100
#define NOFLSH  0000200
#define IEXTEN  0000400
#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE  0004000
#define FLUSHO  0020000
#define PENDIN  0040000
#define TOSTOP  0100000
#define ITOSTOP TOSTOP
#define EXTPROC 0200000
